热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

相位|量纲_matlab信号的频域分析

篇首语:本文由编程笔记#小编为大家整理,主要介绍了matlab信号的频域分析相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了matlab 信号的频域分析相关的知识,希望对你有一定的参考价值。


%画出频率为100Hz和300Hz的复合正弦波
Fs=5120;N=1024;
dt=1.0/5120;T=dt*N;
t=linspace(0, T, N);
x=10*sin(2*pi* 100 *t) + 10/3*sin(2*pi* 3*100 *t);
plot(t, x);
%对复合正弦波进行傅里叶变换,得到一个复数
y=fft(x, N);
a=real(y);b=imag(y);%a为y的实部,b为y的虚部
figure;
subplot(2, 1, 1);plot(a);
subplot(2, 1, 2);plot(b);
%A1为y的幅值,Q1为y的相位
A1=abs(y);
Q1=angle(y)*180/pi;%算出弧度,角度是angle(y),角度变弧度需要 *180/pi
figure;
subplot(2, 1, 1);plot(A1);
subplot(2, 1, 2);plot(Q1);


下面是频率为100Hz和300Hz的复合正弦波

傅里叶变换后的实部(上图)和虚部(下图)图

傅里叶变换后的幅值图(上图)和相位图(下图)

实际上,上面的幅值和相位图存在问题
问题1:显示了负频率部分

问题2:X坐标不是频率
问题3:幅值量纲未还原,幅值应该是 10,10/3

更改后的代码

%A1=abs(y);Q1=angle(y)*180/pi;
%figure;
%subplot(2, 1, 1);plot(A1);
%subplot(2, 1, 2);plot(Q1);%算出弧度,角度是angle(y),角度变弧度需要 *180/pi
f=linspace(0, Fs/2, N/2);%定义X坐标为频率,且频率的范围是[0, Fs/2]
A1=abs(y)/(N/2);%还原幅值的量纲,使它最终变为 10,10/3
Q1=angle(y)*180/pi;%算出弧度,角度是angle(y),角度变弧度需要 *180/pi
figure;
subplot(2, 1, 1);
plot(f, A1(1:N/2));
subplot(2, 1, 2);
plot(f, Q1(1:N/2));


在之前的代码的基础上增加功率谱对数功率谱
功率谱就是对幅值进行平方
对数功率谱是对功率谱进行取对数运算

A2=A1.^2;%功率谱
P2=20*log10(A2);%对数功率谱,dB=20*log(P)
figure;
subplot(2, 1, 1);
plot(f, A2(1:N/2));%只画数组A2的[1,N/2]部分
subplot(2, 1, 2);
plot(f, P2(1:N/2));%只画数组P2的[1,N/2]部分

功率谱是上图,对数功率谱是下图,对数功率谱可以更加明显地看出来功率谱中幅值比较小地部分

下面是方波信号的功率谱和对数功率谱,可以非常明显的体会到为什么使用对数功率谱。


推荐阅读
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 本文详细介绍了PHP中几个常用的数组回调函数,包括array_filter、array_map、array_walk和array_reduce。通过具体的语法、参数说明及示例,帮助开发者更好地理解和使用这些函数。 ... [详细]
  • 本题提供了一个区间数组 intervals,其中每个区间 intervals[i] 包含两个整数 [starti, endi],并且所有 starti 值各不相同。任务是找到每个区间的右侧区间,即存在一个区间 j 满足 startj >= endi 并且 startj 是尽可能小的。返回一个数组,该数组包含每个区间右侧区间的索引;如果没有合适的右侧区间,则返回 -1。 ... [详细]
  • 使用Python构建网页版图像编辑器
    本文详细介绍了一款基于Python开发的网页版图像编辑工具,具备多种图像处理功能,如黑白转换、铅笔素描效果等。 ... [详细]
  • LeetCode 102 - 二叉树层次遍历详解
    本文详细解析了LeetCode第102题——二叉树的层次遍历问题,提供了C++语言的实现代码,并对算法的核心思想和具体步骤进行了深入讲解。 ... [详细]
  • 多路查找树:B树与B+树详解
    本文详细介绍了B树及其变种B+树的基本概念、特性以及应用场景。B树作为一种平衡的多路查找树,在数据库和文件系统中有着广泛的应用。文章不仅解释了B树的定义,还深入探讨了B树的结构特点及操作方法。 ... [详细]
  • 本文详细介绍了 Node.js 中 OS 模块的 arch 方法,包括其功能、语法、参数以及返回值,并提供了具体的使用示例。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 深入解析 C++ 中的 String 和 Vector
    本文详细介绍了 C++ 编程语言中 String 和 Vector 的使用方法及特性,旨在帮助开发者更好地理解和应用这两个重要的容器。 ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • Canopy环境安装与使用指南
    《利用Python进行数据分析》一书推荐使用EPDFree版本的环境,然而随着技术的发展,目前更多人倾向于使用Canopy。本文将详细介绍Canopy的安装及使用方法。 ... [详细]
  • 10月19日,限量免费参与IBM云计算大会
    10月19日,限量免费报名参加IBM云计算大会,探索前沿科技,推动商业转型。 ... [详细]
  • MVC模式下的电子取证技术初探
    本文探讨了在MVC(模型-视图-控制器)架构下进行电子取证的技术方法,通过实际案例分析,提供了详细的取证步骤和技术要点。 ... [详细]
author-avatar
拍友2502882315
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有